| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { defineEventHandler, EventHandlerRequest } from 'h3';
- import { DB } from '~~/server/db/DB';
- import { createErrorResponse, createSuccessResponse, IResponse } from '~~/server/utils/response';
- export interface IChannel {
- id: number;
- model_id: number;
- parent_id: number;
- name: string;
- type: 'list'|'link',
- url: string;
- outlink: string;
- diyname: string;
- }
- export default defineEventHandler<EventHandlerRequest, Promise<IResponse<IChannel & {
- childs: IChannel[];
- parents: IChannel[];
- }>>>(async (event) => {
- try {
- const id = event.context.params?.id;
- if (!id)
- return createErrorResponse('分类ID不能为空');
-
- const category = await DB.table('pr_cms_channel')
- .where('id', id)
- .where('status', 'normal')
- .first();
- if (!category)
- return createErrorResponse('分类不存在');
- const childs = await DB.table('pr_cms_channel')
- .where('status', 'normal')
- .where('parent_id', id)
- .orderBy('weigh', 'desc')
- .orderBy('id', 'desc')
- .get();
- const parents : IChannel[] = [];
- let parentId = category.parent_id;
- while (parentId) {
- const parent = await DB.table('pr_cms_channel')
- .where('id', parentId)
- .where('status', 'normal')
- .first();
- if (!parent)
- break;
- parents.push(parent);
- parentId = parent.parent_id;
- }
- category.parents = parents;
- category.childs = childs;
- return createSuccessResponse(category);
- } catch (error) {
- return createErrorResponse(error);
- }
- });
|